8. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ 4 (์ด์ค‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ), ์Šคํƒ

7/22/2025

์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

์ด์ค‘doubly ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š”
ํ•œ ๋…ธ๋“œ๊ฐ€ ์ž๊ธฐ ์•ž์— ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.

(๋…ธ๋“œ1) <-> (๋…ธ๋“œ2) <-> (๋…ธ๋“œ3) ์ด๋ ‡๊ฒŒ

์—ฌ๊ธฐ์„œ๋Š” ๋งจ ์•ž์˜ ๋…ธ๋“œ๋ฅผ ํ—ค๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค๊ณ .

์‚ฝ์ž…

  1. ๋งจ ์•ž์— ์‚ฝ์ž…

    1. ์ƒˆ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ 
    2. ๊ธฐ์กด์˜ ํ—ค๋“œ์˜ prev ํฌ์ธํ„ฐ๊ฐ€ ์ƒˆ ๋…ธ๋“œ๋ฅผ ํ–ฅํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
    3. ์ƒˆ ๋…ธ๋“œ์˜ Next ๋ฅผ ๊ธฐ์กด์˜ ํ—ค๋“œ ๋…ธ๋“œ๋กœ
    4. ์ƒˆ ๋…ธ๋“œ์˜ prev ํฌ์ธํ„ฐ๋ฅผ null ๋กœ ํ•œ๋‹ค.
  2. ๋งจ ๋์— ์‚ฝ์ž…

    1. ์ƒˆ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ 
    2. ๊ธฐ์กด์˜ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์˜ next๊ฐ€ ์ƒˆ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ 
    3. ์ƒˆ ๋…ธ๋“œ์˜ prev๊ฐ€ ๊ธฐ์กด์˜ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋กœ
    4. ์ƒˆ ๋…ธ๋“œ์˜ Next๋ฅผ Null๋กœ
  3. ์ค‘๊ฐ„์— ์‚ฝ์ž…

    1. ์ƒˆ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ 
    2. ์ƒˆ ๋…ธ๋“œ์˜ prev์™€ next๋ฅผ ๊ฐ๊ฐ ์ง€์ •ํ•ด์ฃผ๊ณ 
    3. ์•ž ๋…ธ๋“œ์˜ next์™€ ๋’ค ๋…ธ๋“œ์˜ prev๋ฅผ ์ƒˆ ๋…ธ๋“œ๋กœ

์‚ญ์ œ

์‚ญ์ œ๋„ ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ free()๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„์›Œ์ค˜์•ผ ํ•˜๋Š”๊ฒƒ์„ ์‹ ๊ฒฝ์จ์•ผ ํ•œ๋‹ค.

  1. ๋งจ ์•ž ๋…ธ๋“œ ์‚ญ์ œ
  2. ๋งจ ๋ ๋…ธ๋“œ ์‚ญ์ œ
  3. ์ค‘๊ฐ„ ๋…ธ๋“œ ์‚ญ์ œ

์ •๋ฆฌ

์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ชจ์•„๋‘๋Š” ์ž๋ฃŒํ˜•์„ '๋ฆฌ์ŠคํŠธ'๋ผ๊ณ  ํ•˜๊ณ 
๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ๊ฑด '๋ฐฐ์—ด'์ด๋‹ค.
ํ•˜์ง€๋งŒ ๋ฏธ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์•ผ๋œ๋‹ค๋Š” ๋‹จ์ ๊ณผ ์•ˆ์— ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ• ๋•Œ ๋ถˆํŽธํ•˜๋‹ค๋Š” ๋‹จ์  ๋•Œ๋ฌธ์— '๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ'๋ผ๋Š” ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•œ๋‹ค.

ํฌ์ธํ„ฐ

๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” 'ํฌ์ธํ„ฐ'๋ผ๋Š”๊ฒŒ ๋“ฑ์žฅ.
๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๊ณ ์žˆ๋Š” ๋ณ€์ˆ˜๋‹ค.
๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์š”์†Œ๋“ค์ด ์„œ๋กœ ์ด์›ƒํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—,
๋ฆฌ์ŠคํŠธ์— ์š”์†Œ๋ฅผ ๋„ฃ์„ ๋•Œ, ํ•ญ์ƒ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๊ฐ’์„ ์ด์ „ ๋…ธ๋“œ์— ์ €์žฅํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆœํšŒํ•  ๋•Œ ๊ฐ ๋…ธ๋“œ์— ์ ํžŒ ์ฃผ์†Œ๊ฐ’๋“ค์„ ํƒ€๊ณ  ํƒ€๊ณ  ์ด๋™ํ•˜๋Š”๊ฒƒ.

๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž…, ์‚ญ์ œ

์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์‹ ๊ฒฝ์จ์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค.
์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ๋„ฃ์„ ๋•Œ 1) ๋จผ์ € ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์ƒˆ ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ์— ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ , 2) ๊ทธ ๋‹ค์Œ์— ์ƒˆ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๊ฐ’์„ ์ด์ „ ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ์— ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.
๊ทธ๋Ÿฌ์ง€ ์•Š๊ณ  ๋จผ์ € ์ƒˆ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๊ฐ’์„ ์•ž ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ์— ๋„ฃ์–ด๋ฒ„๋ฆฌ๋ฉด, ๊ธฐ์กด์— ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ์ฃผ์†Œ๊ฐ’์ด ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜๊ณ  ์ƒˆ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ์˜ ํฌ์ธํ„ฐ์— ๋„ฃ์„ ์ฃผ์†Œ๊ฐ’์„ ์•Œ ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.
์‚ญ์ œํ•  ๋•Œ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ free()ํ•จ์ˆ˜๋กœ ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„์›Œ์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— (๊ฐ€๋น„์ง€ ์ปฌ๋ ˆ๊ฑฐ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—) ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
(์ด๋Ÿฐ ๊ณผ์ •๋“ค์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— C์–ธ์–ด๊ฐ€ ๊ณต๋ถ€ํ•ด๋ณผ๋งŒ ํ•œ ์–ธ์–ด๋ผ๊ณ  ํ•œ๋‹ค.)

์Šคํƒ

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ.
๋จผ์ € ๋“ค์–ด์˜จ๊ฒŒ ๋‚˜์ค‘์— ๋‚˜๊ฐ„๋‹ค.
๊ทผ๋ฐ ์™œ ๊ตณ์ด ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ๋ ๊นŒ? ๋„ฃ๋Š” ์ˆœ์„œ์— ์ƒ๊ด€ ์—†์ด ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ์ ‘๊ทผํ•˜๊ณ  ์ฝ๊ณ  ์“ฐ๊ณ  ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋” ์ข‹์€๊ฑฐ ์•„๋‹Œ๊ฐ€?
๊ตณ์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ๋„ฃ์€ ์ž๋ฃŒ์—๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐ•๋ ฅํžˆ ์ œํ•œ์„ ๋‘” ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฐ”๋กœ ์—๋Ÿฌ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ.

์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ํŽธํ•œ ๊ฒฝ์šฐ?

  • ๊ด„ํ˜ธ ์ง ๋งž์ถ”๊ธฐ
  • ์ธํ”ฝ์Šค๋ฅผ ํฌ์ŠคํŠธํ”ฝ์Šค๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ
    (1+2)*3 ์ฒ˜๋Ÿผ ์ธ๊ฐ„์—๊ฒŒ ์ต์ˆ™ํ•œ ๋ฐฉ์‹์€ '์ธํ”ฝ์Šค'.
    ์ปดํ“จํ„ฐ๋Š” 'ํฌ์ŠคํŠธํ”ฝ์Šค'(ํ˜น์€ ํ”„๋ฆฌํ”ฝ์Šค) ๋ฐฉ์‹์„ ์„ ํ˜ธํ•œ๋‹ค.
    ์œ„์˜ ์‹์„ ํฌ์ŠคํŠธ ํ”ฝ์Šค๋กœ๋Š” 312+*.
    ํ•ด์„ํ•˜๋ฉด ์—ฐ์‚ฐ์ž์˜ ์™ผ์ชฝ ๋‘ ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์—ฐ์‚ฐ์„ ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์™ผ์ชฝ ์ˆซ์ž์™€ ํ•จ๊ป˜ ์˜ค๋ฅธ์ชฝ ์—ฐ์‚ฐ์ž์— ํ•ด๋‹นํ•˜๋Š” ์—ฐ์‚ฐ์„ ์‹คํ–‰.
  • ํฌ์ŠคํŠธ ํ”ฝ์Šค ์ˆ˜์‹ ๊ณ„์‚ฐํ•˜๊ธฐ
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ตฌํ˜„ํ•˜๊ธฐ
  • ์ŠคํŒฌ(span) ์ฐพ๊ธฐ
  • ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐฉ๋ฌธํ•œ ํŽ˜์ด์ง€ ๊ธฐ๋ก ๊ด€๋ฆฌํ•˜๊ธฐ
  • ํ…์ŠคํŠธ ์—๋””ํ„ฐ์—์„œ ์ž‘์—… ์ทจ์†Œ ๊ณผ์ •
  • html์™€ xml์—์„œ ํƒœ๊ทธ ์ง ๋งž์ถ”๊ธฐ

์ •์˜

์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ํ•œ์ชฝ ๋์—์„œ ์ด๋ฃจ์–ด์ง€๋Š”, ์ˆœ์„œ๊ฐ€ ๋งค๊ฒจ์ง„ ๋ฆฌ์ŠคํŠธ.
์ด ๋์„ ํƒ‘(Top)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
('๋ฆฌ์ŠคํŠธ'์˜ ์ข…๋ฅ˜์ด๋‹ˆ๊นŒ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์Šคํƒ์—์„œ ์ค‘์š”ํ•œ ์ˆœ์„œ๋Š” ๋ฐ”๋กœ ์‚ฝ์ž…๋œ ์ˆœ์„œ๋ผ๋Š”๊ฒƒ๋„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.)

์Šคํƒ ADT

ADT๋Š” '์ถ”์ƒ๋ฐ์ดํ„ฐํƒ€์ž…'.
์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ๋“  ์ƒ๊ด€ ์—†์ด ํŠน์ • ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ ํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์„ '์Šคํƒ'์ด๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๊ทธ 'ํŠน์ • ๋ฐฉ์‹'์„ ์ž˜ ์ดํ•ดํ•˜๋Š”๊ฒƒ์ด ์ค‘์š”.
push() pop()์ด ์ผ๋‹จ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—ฐ์‚ฐ๋“ค.